专利摘要:
本發明揭示一種協助檢測的方法,用以找出造成一計算器過載的一第一程式,該計算器所執行的程式各設定有一優先權指數,用以標示各程式被執行的優先次序,該方法包括:(A)透過一第二程式設定一上限變數等於數值M、一下限變數等於數值N以及一中間變數等於一第一結果數值,該第一結果數值係依據一半值計算式H取得,其中該半值計算式H為(該上限變數+該下限變數)/2;(B)透過該第二程式設定一第三程式的優先權指數等於該中間變數;(C)當該第三程式可被該計算器所執行時,透過該第二程式先設定該上限變數等於該中間變數後,再設定該中間變數等於一第二結果數值,其中該第二結果數值係透過該半值計算式H取得,或當該第三程式無法被該計算器所執行時,透過該第二程式先設定該下限變數等於該中間變數後,再設定該中間變數等於該第二結果數值;(D)重複執行步驟(B)~(C),並於該上限或下限變數與該中間變數之間的差值符合一預設值時,停止執行步驟(B)~(C);以及(E)輸出該中間變數的數值。
公开号:TW201317776A
申请号:TW100139438
申请日:2011-10-28
公开日:2013-05-01
发明作者:Szu-Cheng Wu
申请人:Accton Technology Corp;
IPC主号:G06F11-00
专利说明:
一種協助檢測的方法
本發明係關於協助檢測的技術,特別是指一種利用優先權指數來協助檢測計算器過載之肇事程式的方法。
在電腦或計算器程式設計及測試的過程中,因為程式設計不當或無法預期的錯誤,常常會影響計算器(computer)(例如:中央處理器(CPU))的執行效率,嚴重甚至造成計算器的過載,影響整個作業系統,造成所謂的鎖死或當機。而計算器過載(overloading)的原因有很多,例如程式設計不當或程式毀損所造成的無限迴圈,永遠佔住計算器的資源。因此不僅需要監控處理器的資源,亦需要在計算器過載時找出這些肇事程式,以解決計算器過載的問題,尤其是對於使用即時作業系統(Real-time operating system)的產品,例如VxWorks,更迫切需要找出肇事程式。
現今,程式設計者通常透過逐步關閉程式並偵測計算器的資源狀態或透過錯誤訊息來找出肇事程式,此舉通常需大量的時間成本去偵測或列印錯誤訊息,以確認肇事程式,如此將會耗時費力於除錯工作上而延誤產品的開發時程。因此,有必要發展檢測肇事程式的技術。
有鑑於此,本發明提供一種協助檢測計算器肇事程式的方法,透過該方法可以找出肇事程式的優先權指數,以協助程式設計者依據該優先權指數,檢查被設定為該優先權指數的程序或程式,藉以有效率地找出肇事程式,減少除錯工作所需耗費的時間。
在本發明實施例的一種協助檢測的方法,用以找出造成一計算器過載的一第一程式,其中該計算器所執行的程式各設定有一優先權指數,用以標示各程式被執行的優先次序,其中該優先權指數的可設定範圍為由M至N的數值,該協助檢測的方法包括下列步驟:(A)透過一第二程式設定一上限變數等於該M、一下限變數等於該N以及一中間變數等於一第一結果數值,該第一結果數值係依據一半值計算式H取得,其中該半值計算式H為(該上限變數+該下限變數)/2;(B)透過該第二程式設定一第三程式的優先權指數等於該中間變數;(C)當該第三程式可被該計算器所執行時,透過該第二程式先設定該上限變數等於該中間變數後,再設定該中間變數等於一第二結果數值,其中該第二結果數值係透過該半值計算式H取得,或當該第三程式無法被該計算器所執行時,透過該第二程式先設定該下限變數等於該中間變數後,再設定該中間變數等於該第二結果數值;(D)重複執行步驟(B)~(C),並於該上限或下限變數與該中間變數之間的差值符合一第一預設值時,停止執行步驟(B)~(C);以及(E)輸出該中間變數的數值。
本發明之另一實施例揭示一種協助檢測的方法,用以找出造成一計算器過載的肇事程式,該計算器所執行的程式各設定有一優先權指數,用以標示各程式被執行的優先次序,其中該優先權指數的可設定範圍為由M至N的數值,該協助檢測的方法包括下列步驟:(A)將一第一程式的優先權指數設定為該M後,使該計算器執行該第一程式,透過該第一程式計數該計算器於一預設時間內執行該第一程式的次數A;(B)將該第一程式的優先權指數設定為該N後,使該計算器執行該第一程式,透過該第一程式計數該計算器於該預設時間內執行該第一程式的次數B;(C)以包括該A及該B的一計算式F,取得該計算器的該負載狀態;(D)透過一第二程式設定一上限變數等於該M、一下限變數等於該N以及一中間變數等於一第一結果數值,該第一結果數值係依據一半值計算式H取得,其中該半值計算式H為(該上限變數+該下限變數)/2;(E)透過該第二程式設定一第三程式的優先權指數等於該中間變數;(F)當該第三程式可被該計算器所執行時,透過該第二程式先設定該上限變數等於該中間變數後,再設定該中間變數等於一第二結果數值,該第二結果數值係依據該半值計算式取得,或當該第三程式無法被該計算器所執行時,透過該第二程式先設定該下限變數等於該中間變數後,再設定該中間變數等於該第二結果數值;(G)重複執行步驟(E)~(F),並於該上限或下限變數與該中間變數之間的差值符合一第一預設值時,停止執行步驟(E)~(F);以及(H)輸出該中間變數的數值。
為使 貴審查委員能對本發明之特徵、目的及功能有更進一步的認知與瞭解,茲配合圖式詳細說明如後:圖1為根據本發明一實施例之協助檢測方法的流程圖,用以說明本發明實施例協助檢測造成計算器過載的肇事程式之方法流程步驟。本實施例適用於VxWorks作業系統或其他可針對各個所欲執行的程式設定予一優先權指數的計算機作業系統,該優先權指數用以代表各個程式被執行的優先次序,其可設定範圍為由M至N的數值,且該數值係包括整數型態的數值或小數型態的數值。於本發明實施例中,係以M>N,且該M的優先次序小於該N的優先次序為例。為了描述及說明上的簡便,在本說明書中,該肇事程式亦指稱為第一程式,係為造成計算器過載的應用程式。而本實施例的協助檢測方法包括一設定程式,用以協助找出肇事程式的優先權指數,包括有一上限變數、一中間變數、及一下限變數等,並可設定一測試程式的優先權指數;其中,該設定程式亦指稱為第二程式,該測試程式亦指稱為第三程式。
請參照圖1,該協助檢測方法100包括下列步驟:
步驟110:透過該第二程式,設定該上限變數等於該M、該下限變數等於該N、以及該中間變數等於一第一結果數值,該第一結果數值係依據一半值計算式H取得,其中該半值計算式H為(該上限變數+該下限變數)/2;
步驟120:透過該第二程式設定該第三程式的優先權指數等於上述的中間變數;
步驟130:當該第三程式可被該計算器所執行時,透過該第二程式先設定該上限變數等於該中間變數後,再設定該中間變數等於一第二結果數值,其中該第二結果數值係透過該半值計算式H取得,或當該第三程式無法被該計算器所執行時,透過該第二程式先設定該下限變數等於該中間變數後,再設定該中間變數等於該第二結果數值;
步驟140:重複執行步驟120及130,並於上述的該上限與該中間變數之間的差值符合一第一預設值時,停止執行步驟120及130;以及
步驟150:輸出該中間變數的數值。
本實施例的協助檢測方法100可藉由電腦程式來實現,而電腦程式所使用的優先權指數常指定為整數的變數形態,但在上述的步驟110及130中,該半值計算式H=(該上限變數+該下限變數)/2的數學計算結果可能會是非整數的,因此本實施例之取得該中間變數的方式,係可設定為(該上限變數+該下限變數)/2之無條件捨去(Round down)小數點後位數的整數,以使優先權指數滿足整數形態的條件,但不以此為限;該中間變數的取得方式亦可設定為(該上限變數+該下限變數)/2之四捨五入或無條件進位(Round up)小數點後位數的整數,或是該中間變數亦可以是具有固定小數位數的非整數。
在VxWorks作業系統中,該優先權指數為一個位元組(byte)的整數變數,其可設定範圍為由M=1至N=255的整數,且優先權指數小的程式將優先被系統執行,也就是優先權指數1的優先次序高於優先權指數255。因此,在上述的步驟130中,「當該第三程式可被該計算器所執行」即表示該第三程式的優先權高於該第一程式,所以先設定該上限變數等於該中間變數後,再設定該中間變數等於一透過該半值計算式H而取得的第二結果數值,以調降該第三程式的優先權指數值;反之,「當該第三程式無法被該計算器所執行」則表示該第三程式的優先權低於該第一程式,所以先設定該下限變數等於該中間變數後,再設定該中間變數等於上述的該第二結果數值,以調升該第三程式的優先權指數值。
上述的步驟130可用以調升或調降該第三程式的優先權指數,並藉由上述的步驟140之重複執行步驟120及130,而逐漸趨近該第一程式的優先權指數數值。當該上限或下限變數等於該中間變數時(對於優先權指數小的程式被優先執行的VxWorks系統,則本條件為當該上限變數等於該中間變數時),表示本實施例的協助檢測方法100已找到該第一程式的優先權指數,因而可不再執行步驟120及130,而進入步驟150輸出此時該中間變數的數值,提供給程式設計者或使用者,可依據該數值而對應到被設為該優先權指數值的程序或程式(也就是該肇事程式或第一程式),以進行程式的除錯工作。
以下舉二個例子以進一步說明之。 第一例:
假設VxWorks系統發生過載而當機,其肇事程式之優先權指數為30,則經由本實施例的協助檢測方法100,第二程式對於上限變數、下限變數、及中間變數(即第三程式的優先權指數)的設定依步驟120及130被執行的次數整理如圖2之表1。如圖之表1所示,該第三程式的優先權指數被逐漸由128而調升或調降,而趨近目標值30。當該步驟120及130被執行的8次後,該上限變數等於該中間變數,表示本第一例已找到該肇事程式的優先權指數值。 第二例:
假設VxWorks系統發生過載而當機,其肇事程式之優先權指數為151,則經由本實施例的協助檢測方法100,第二程式對於上限變數、下限變數、及中間變數(即第三程式的優先權指數)的設定依步驟120及130被執行的次數整理如圖3之表2。如圖之表2所示,該第三程式的優先權指數被逐漸由128而調升或調降,而趨近目標值151。當該步驟120及130被執行的8次後,該上限變數等於該中間變數,表示本第二例已找到該肇事程式的優先權指數值。
上述實施例的協助檢測方法100所使用的優先權指數並不限於是整數的變數形態,其亦可以是非整數的,例如實數的變數形態。因此,對於優先權指數可設定或宣告為實數變數的計算器作業系統,另一實施例將優先權指數的可能範圍設定為由1至255的數值,也就是該M等於1且該N等於255,且優先權指數小的程式將優先被系統執行。在步驟110及130中,本實施例可將該中間變數的取得方式,設定為等於(該上限變數+該下限變數)/2的計算結果數值。因此,步驟130的「該第三程式可被該計算器所執行」即表示該第三程式的優先權高於該第一程式,所以設定該上限變數等於該中間變數及該中間變數等於(該上限變數+該下限變數)/2,以調降該第三程式的優先權指數值;反之,「該第三程式無法被該計算器所執行」則表示該第三程式的優先權低於該第一程式,所以設定該下限變數等於該中間變數及該中間變數等於(該上限變數+該下限變數)/2,以調升該第三程式的優先權指數值。
上述的步驟130可用以調升或調降該第三程式的優先權指數,並藉由上述的步驟140之重複執行步驟120及130,而逐漸趨近該第一程式的優先權指數數值。當該上限變數與該中間變數之間的差值符合一預設值時,該上限變數實質上等於該中間變數,表示本實施例的協助檢測方法100已找到該第一程式的優先權指數,因而可不再執行步驟120及130,而進入步驟150輸出此時該中間變數的數值,提供給程式設計者或使用者,可依據該數值而對應到被設為該優先權指數值的程序或程式(也就是該肇事程式或第一程式),以進行程式的除錯工作。但考量實數變數在運算過程中可能的誤差,上述的「該上限變數實質上等於該中間變數」可設定為該上限變數與該中間變數之間的差值不大於一預設值(例如:0.5,但不以此為限),以便於該優先權指數可順利被找到。另一方面,倘若該計算器的作業系統是以優先權指數大的程式優先被執行,則步驟140的判斷條件可以是「當該上限變數與該中間變數之間的差值符合一預設值時」。
以下舉一個例子以進一步說明之。假設某一計算器發生過載而當機,其肇事程式之優先權指數為31,則經由本實施例的協助檢測方法100,第二程式對於上限變數、下限變數、及中間變數(即第三程式的優先權指數)的設定依步驟120及130被執行的次數整理如圖4之表3。如圖之表3所示,該第三程式的優先權指數被逐漸由128而調升或調降,而趨近目標值31。當該步驟120及130被執行的9次後,該上限變數與該中間變數之間的差值小於0.5時,表示已找到該肇事程式的優先權指數,其為該中間變數經四捨五入後的數值。
此外,為了確認該計算器是否處於過載的狀態,本發明之實施例可進一步進行對該計算器負載狀態的計算,而當該計算器處於過載狀態被判斷出時,則執行上述的協助檢測方法100,以找出該肇事程式。關於上述的該計算器負載狀態的計算,如下的實施例可利用一計數程式以計數其本身被執行的次數,且該計數程式亦指稱為第四程式。圖5為根據本發明實施例的計算器負載狀態之計算方法流程圖,該計算方法包括下列步驟:
步驟102:將該第四程式的優先權指數設定為該M後,使該計算器執行該第四程式,透過該第四程式計數該計算器於一預設時間內執行該第四程式的次數A;
步驟104:將該第四程式的優先權指數設定為該N後,使該計算器執行該第四程式,透過該第四程式計數該計算器於該預設時間內執行該第四程式的次數B;以及
步驟106:以包括該A及該B的一計算式F,取得該計算器的該負載狀態。
倘若該電腦系統是以優先權指數小的程式優先被執行,則該第四程式包括一計次程式碼,且該計次程式碼包括一參數。在步驟102中,該第四程式的優先權指數設為最高優先權的該M,例如,就前述的實施例而言,M等於1;每當該計算程式該被計算器執行一次,該計次程式碼的該參數會被累加1一次,在該預設時間(例如1秒)後,輸出該參數值即為該次數A。接著在步驟104中,該第四程式的優先權指數設為最低優先權的該N,例如,N等於255;每當該計算程式該被計算器執行一次,該計次程式碼的該參數會被累加1一次,在該預設時間後輸出該參數值即為該次數B。接著以步驟106的計算式F算出該計算器的負載狀態。該計算式F可以是((A-B)/A)×100%的負載百分比做為負載狀態的指標並於該負載百分比大於一預設值時,例如95%,啟動上述的協助檢測方法100或200之程式或程序,以找出該肇事程式。另一方面,倘若該電腦系統是以優先權指數大的程式優先被執行,則該計算式F可以是((B-A)/B)×100%的負載百分比做為負載狀態的指標。
唯以上所述者,僅為本發明之較佳實施例,當不能以之限制本發明的範圍。即大凡依本發明申請專利範圍所做之均等變化及修飾,仍將不失本發明之要義所在,亦不脫離本發明之精神和範圍,故都應視為本發明的進一步實施狀況。
100...協助檢測方法
102/104/106...步驟
110/120/130/140/150...步驟
圖1為根據本發明一實施例之協助檢測計算器方法的流程圖,用以說明協助檢測造成電腦過載的肇事程式之方法流程步驟。
圖2為本實施例的第一例對於上限變數、下限變數及中間變數的設定整理表格(表1)。
圖3為本實施例的第二例對於上限變數、下限變數及中間變數的設定整理表格(表2)。
圖4為本實施例的另一例對於上限變數、下限變數及中間變數的設定整理表格(表3)。
圖5為根據本發明實施例的計算器負載狀態之計算方法流程圖。
100...協助檢測方法
110/120/130/140/150...步驟
权利要求:
Claims (13)
[1] 一種協助檢測的方法,用以找出造成一計算器過載的一第一程式,該計算器所執行的程式各設定有一優先權指數,用以標示各程式被執行的優先次序,其中該優先權指數的可設定範圍為由M至N的數值,該協助檢測的方法包括下列步驟:(A)透過一第二程式設定一上限變數等於該M、一下限變數等於該N以及一中間變數等於一第一結果數值,該第一結果數值係依據一半值計算式H取得,其中該半值計算式H為(該上限變數+該下限變數)/2;(B)透過該第二程式設定一第三程式的優先權指數等於該中間變數;(C)當該第三程式可被該計算器所執行時,透過該第二程式先設定該上限變數等於該中間變數後,再設定該中間變數等於一第二結果數值,其中該第二結果數值係透過該半值計算式H取得,或當該第三程式無法被該計算器所執行時,透過該第二程式先設定該下限變數等於該中間變數後,再設定該中間變數等於該第二結果數值;(D)重複執行步驟(B)~(C),並於該上限或下限變數與該中間變數之間的差值符合一第一預設值時,停止執行步驟(B)~(C);以及(E)輸出該中間變數的數值。
[2] 如申請專利範圍第1項所述之協助檢測的方法,進一步包括下列步驟:計算該計算器的負載狀態;及若該計算器處於過載的狀態,則執行步驟(A)~(E)。
[3] 如申請專利範圍第2項所述之協助檢測的方法,其中計算該計算器的負載狀態包含下列步驟:將一第四程式的優先權指數設定為該M後,使該計算器執行該第四程式,透過該第四程式計數該計算器於一預設時間內執行該第四程式的次數A;將該第四程式的優先權指數設定為該N後,使該計算器執行該第四程式,透過該第四程式計數該計算器於該預設時間內執行該第四程式的次數B;以及以包括該A及該B的一計算式F,取得該計算器的該負載狀態。
[4] 如申請專利範圍第3項所述之協助檢測的方法,其中若該優先權指數M的優先次序高於N計算器,則該計算式F=((A-B)/A)×100%;而若該優先權指數M的優先次序低於N計算器,則該計算式F=((B-A)/B)×100%。
[5] 如申請專利範圍第4項所述之協助檢測的方法,其中該計算器處於過載的狀態係為該計算器的負載狀態大於一第二預設值。
[6] 如申請專利範圍第1項所述之協助檢測的方法,其中該M等於1且該N等於255。
[7] 如申請專利範圍第1項所述之協助檢測的方法,其中若該優先權指數M的優先次序高於N,則該步驟(D)為重複執行步驟(B)~(C),並於該上限變數與該中間變數之間的差值符合該第一預設值時,停止執行步驟(B)~(C)。
[8] 如申請專利範圍第1項所述之協助檢測的方法,其中該第一預設值不大於0.5。
[9] 一種協助檢測的方法,用以於一計算器過載時協助檢測肇事程式,該計算器所執行的程式各設定有一優先權指數,用以標示各程式被執行的優先次序,其中該優先權指數的可設定範圍為由M至N的數值,該協助檢測的方法包括下列步驟:(A)將一第一程式的優先權指數設定為該M後,使該計算器執行該第一程式,透過該第一程式計數該計算器於一預設時間內執行該第一程式的次數A;(B)將該第一程式的優先權指數設定為該N後,使該計算器執行該第一程式,透過該第一程式計數該計算器於該預設時間內執行該第一程式的次數B;(C)以包括該A及該B的一計算式F,取得該計算器的該負載狀態;(D)透過一第二程式設定一上限變數等於該M、一下限變數等於該N以及一中間變數等於一第一結果數值,該第一結果數值係依據一半值計算式H取得,其中該半值計算式H為(該上限變數+該下限變數)/2;(E)透過該第二程式設定一第三程式的優先權指數等於該中間變數;(F)當該第三程式可被該計算器所執行時,透過該第二程式先設定該上限變數等於該中間變數後,再設定該中間變數等於一第二結果數值,該第二結果數值係依據該半值計算式取得,或當該第三程式無法被該計算器所執行時,透過該第二程式先設定該下限變數等於該中間變數後,再設定該中間變數等於該第二結果數值;(G)重複執行步驟(E)~(F),並於該上限或下限變數與該中間變數之間的差值符合一第一預設值時,停止執行步驟(E)~(F);以及(H)輸出該中間變數的數值。
[10] 如申請專利範圍第9項所述之協助檢測的方法,其中若該優先權指數M的優先次序高於N,則該計算式F=((A-B)/A)×100%;而若該優先權指數M的優先次序低於N,則該計算式F=((B-A)/B)×100%。
[11] 如申請專利範圍第9項所述之協助檢測的方法,其中該M等於1且該N等於255。
[12] 如申請專利範圍第9項所述之協助檢測的方法,其中若該優先權指數M的優先次序高於N,則該步驟(G)為重複執行步驟(E)~(F),並於該上限變數與該中間變數之間的差值符合該第一預設值時,停止執行步驟(E)~(F)。
[13] 如申請專利範圍第9項所述之協助檢測的方法,其中該第一預設值不大於0.5。
类似技术:
公开号 | 公开日 | 专利标题
JP2010534891A5|2011-09-08|
US20150227446A1|2015-08-13|Bottleneck detection device, method and recording medium storing program
Kästner et al.2014|Proving the absence of stack overflows
TWI442226B|2014-06-21|一種協助檢測的方法
US10176076B2|2019-01-08|Breaking code execution based on time consumption
Counsell et al.2015|Re-visiting the'maintainability index'metric from an object-oriented perspective
Björkman et al.2009|Verification of safety logic designs by model checking
US20140040866A1|2014-02-06|Managing code instrumentation in a production computer program
Muthusamy et al.2014|Effectiveness of test case prioritization techniques based on regression testing
Kaur et al.2017|Improving the quality of software by refactoring
US20140123113A1|2014-05-01|System and a method for analyzing a piece of code
Babu et al.2013|Assessment of maintainability factor
JP5745561B2|2015-07-08|予測誤差評価装置及び方法
Lawanna2016|Filtering test case selection for increasing the performance of regression testing
JP5463226B2|2014-04-09|ソースコード検査方法およびソースコード検査装置
Chen et al.2010|Test adequacy criterion based on coincidental correctness probability
Stein et al.2007|Analysis of path exclusion at the machine code level
Sarwar et al.2008|A comparative study of mi tools: Defining the roadmap to mi tools standardization
Tripathi et al.2014|Optimizing testing efforts based on change proneness through machine learning techniques
KR20140039356A|2014-04-02|소프트웨어 모듈의 오류 검출 장치 및 그 방법
US20120005055A1|2012-01-05|Dynamic computation of roi for test automation
JP2016146032A|2016-08-12|ソフトウェアの網羅試験装置および網羅試験方法
JP2012128727A|2012-07-05|ソフトウェアコンポーネントの信頼性評価方法および装置
Choudhary et al.2015|A review on regression testing techniques
Rehman2019|Quantifying Flaky Tests to Detect Test Instabilities
同族专利:
公开号 | 公开日
TWI442226B|2014-06-21|
US20130111269A1|2013-05-02|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
US7827154B1|2004-10-05|2010-11-02|Symantec Operating Corporation|Application failure diagnosis|
US7424644B2|2005-03-01|2008-09-09|Microsoft Corporation|Method and system for recovering data from a hung application|
US7698597B2|2006-02-28|2010-04-13|International Business Machines Corporation|Method of isolating erroneous software program components|
US7716531B2|2007-06-29|2010-05-11|International Business Machines Corporation|System and method for fault mapping of exceptions across programming models|
US8166464B2|2008-06-27|2012-04-24|Microsoft Corporation|Analysis and detection of soft hang responsiveness program errors|
US7979747B2|2009-02-20|2011-07-12|International Business Machines Corporation|Interactive problem resolution presented within the context of major observable application behaviors|
JP5441626B2|2009-11-06|2014-03-12|日立オートモティブシステムズ株式会社|車載用マルチアプリ実行装置|
US8413144B1|2010-07-30|2013-04-02|Symantec Corporation|Providing application-aware high availability of virtual machines|US10452508B2|2015-06-15|2019-10-22|International Business Machines Corporation|Managing a set of tests based on other test failures|
法律状态:
2016-03-21| MM4A| Annulment or lapse of patent due to non-payment of fees|
优先权:
申请号 | 申请日 | 专利标题
TW100139438A|TWI442226B|2011-10-28|2011-10-28|一種協助檢測的方法|TW100139438A| TWI442226B|2011-10-28|2011-10-28|一種協助檢測的方法|
US13/611,143| US20130111269A1|2011-10-28|2012-09-12|Method for assisting inspection|
[返回顶部]